<?php

/*
|--------------------------------------------------------------------------
| 创建应用程序
|--------------------------------------------------------------------------
|
| 我们要做的第一件事是创建一个新的Laravel应用程序实例，
| 它作为Laravel所有组件的“粘合剂”，
| 是绑定所有不同部分的系统的IoC容器。
|
*/

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

/*
|--------------------------------------------------------------------------
| 绑定重要接口
|--------------------------------------------------------------------------
|
| 接下来，我们需要将一些重要的接口绑定到容器中，以便
| 我们将能够在需要时解决这些问题。Kernel可提供
| 来自web和CLI的对此应用程序的传入请求。
|
*/

$app->singleton(
    Illuminate\Contracts\Http\Kernel::class,
    App\Http\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Console\Kernel::class,
    App\Console\Kernel::class
);

$app->singleton(
    Illuminate\Contracts\Debug\ExceptionHandler::class,
    App\Exceptions\Handler::class
);

/*
|--------------------------------------------------------------------------
| 返回应用程序
|--------------------------------------------------------------------------
|
| 此脚本返回应用程序实例。这个例子是给
| 调用脚本，以便我们可以分离实例的构建
| 从应用程序的实际运行和发送响应。
|
*/

return $app;
